package org.springside.examples.miniservice.ws.user;

import javax.jws.WebParam;
import javax.jws.WebService;

import org.springside.examples.miniservice.ws.Constants;
import org.springside.examples.miniservice.ws.user.dto.UserDTO;
import org.springside.modules.webservice.FaultException;

/**
 * JAX-WS2.0的WebService接口定义类.
 * 
 * 使用@WebService将接口中的所有方法输出为Web Service. 
 * 用annotation设置方法、参数和返回值在WSDL中的定义.(因为CXF默认会把参数名默认反射为argX，因此必须用@WebParam映射参数名)
 * 使用DTO传输对象隔绝系统内部对象修改对外系统的影响.
 * 
 * @author sky
 * @author calvin
 */
@WebService(name = "UserService", targetNamespace = Constants.NS)
public interface UserWebService {
	/**
	 * 根据用户ID获得用户账号.
	 */
	public UserDTO getUser(@WebParam(name = "userId") Integer userId) throws FaultException;

	/**
	 * 插入User.
	 * 
	 * @return 新增对象的ID.
	 */
	public Integer createUser(@WebParam(name = "user") UserDTO user) throws FaultException;

	/**
	 * 验证用户名密码.
	 *  
	 * @return 验证通过时返回true.用户名或密码错误均返回false.
	 */
	public Boolean authUser(@WebParam(name = "loginName") String loginName,
			@WebParam(name = "password") String password);
}
